#include<iostream>

using namespace std;
const int N = 5002;
int presum[N][N];
int n, r;


int get(int x1, int y1, int x2, int y2){
    return presum[x2][y2] - presum[x2][y1 - 1] - presum[x1 - 1][y2] + presum[x1 - 1][y1 - 1];
}

int main(){
    int maxv = -1;
    cin >> n >> r;
    int x, y, w;
    for(int i = 1; i <= n; i ++){
        cin >> x >> y >> w;
        presum[x + 1][y + 1] += w;
    }
    
    
    for(int i = 1; i <= 5001; i ++){
        for(int j = 1; j <= 5001; j ++){
            presum[i][j] = presum[i][j] + presum[i - 1][j] + presum[i][j - 1] - presum[i - 1][j - 1];
        }
    }
    
    
    for(int i = 1; i <= 5001; i ++){
        for(int j = 1; j <= 5001; j ++){
            int x1 = min(i + r - 1, 5001);
            int y1 = min(j + r - 1, 5001);

            maxv = max(maxv, get(i, j, x1, y1));
        }
    }
    
    cout << maxv << '\n';
    
       
    
    return 0;
}